package cc.linker.steplink.crm.commons.utils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class CopyMap {
    /**
     * 复制map对象
     * @explain 将paramsMap中的键值对全部拷贝到resultMap中；
     * paramsMap中的内容不会影响到resultMap（深拷贝）
     * @param paramsMap
     *     被拷贝对象
     * @param resultMap
     *     拷贝后的对象
     */
    public static void mapCopy(Map paramsMap, Map resultMap) {
        if (resultMap == null){
            resultMap = new HashMap();
        }
        if (paramsMap == null){
            return;
        }
        Iterator it = paramsMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            Object key = entry.getKey();
            resultMap.put(key,paramsMap.get(key));
        }
    }


    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("age", 20);
        map2.put("age1",null);
        // 测试一：是否实现拷贝
        mapCopy(map2, map);
        System.out.println(map);// {age=20, name=Marydon}
        System.out.println(map2);// {age=20}
        // 测试二：拷贝后的map对象是否受原map对象的影响
//        map2.clear();
        map2.put("age", 30);
        System.out.println(map);// {age=20, name=Marydon}
        System.out.println(map2);// {}

    }
}
